package upload

import (
	"ginweb-admin/commons/response"
	"ginweb-admin/global"
	"ginweb-admin/utils"
	"github.com/gin-gonic/gin"
	"log"
	"os"
	"path"
	"strings"
	"time"
)

// 本地文件上传
type UploadFileApi struct{}

func (uploadFile *UploadFileApi) UploadFile(c *gin.Context) {
	// 获取文件上传传递过来的参数
	dir := c.PostForm("dir")
	// 单文件
	file, _ := c.FormFile("file")
	// 读取文件后缀
	ext := path.Ext(file.Filename)
	// 读取文件名并加密
	name := strings.TrimSuffix(file.Filename, ext)
	name = utils.MD5V([]byte(name))
	format := time.Now().Format("20060102150405")
	// 拼接新y文件名
	filename := name + "_" + format + ext
	log.Println("文件上传后的名字是：" + filename)
	// 获取文件上传日期
	ymdPath := time.Now().Format("2006-01-02")
	var relativePath string
	if dir != "" {
		relativePath = global.Config.Local.Path + "/" + dir + "/" + ymdPath
	} else {
		relativePath = global.Config.Local.Path + "/" + ymdPath
	}
	// 拼接路径和文件名
	filepath := relativePath + "/" + filename
	// 创建父目录
	err := os.MkdirAll(relativePath, os.ModeDir)
	if err != nil {
		response.FailWithMessage("文件创建目录失败", c)
		return
	}
	// 上传文件至指定的完整文件路径
	c.SaveUploadedFile(file, filepath)

	// 定义map的返回数据信息
	m := map[string]any{}
	m["relativeUrl"] = filepath
	m["url"] = global.Config.Local.FileServer + filepath
	m["size"] = file.Size
	m["filename"] = file.Filename
	m["newFilename"] = filename
	m["ext"] = ext

	response.OkMsgData("上传成功", m, c)

}

// type LocalUploadFileApi struct{}
//
// func (api *LocalUploadFileApi) LocalUploadFile(c *gin.Context) {
// 	// 获取文件上传传递过来的参数
// 	dir := c.PostForm("dir")
// 	// 获取文件类型的名字
// 	file, _ := c.FormFile("file")
//
// 	// 读取文件的后缀
// 	ext := path.Ext(file.Filename)
// 	// 加密文件的名字（唯一）
// 	name := strings.TrimSuffix(file.Filename, ext)
// 	name = utils.MD5V([]byte(name))
// 	// 时间格式化
// 	format := time.Now().Format("20060102150405")
//
// 	// 拼接新的文件名
// 	filename := name + "_" + format + ext
// 	log.Println("文件上传后的名字是：", filename)
//
// 	// 获取文件的上传日期
// 	ymdPath := time.Now().Format("2006-01-02")
// 	// 相对路径
// 	var relativePath string
// 	if dir != "" {
// 		relativePath = global.Config.Local.Path + "/" + dir + "/" + ymdPath
// 	} else {
// 		relativePath = global.Config.Local.Path + "/" + ymdPath
// 	}
//
// 	// 拼接路径和文件名
// 	filePath := relativePath + "/" + filename
// 	// 创建目录
// 	err := os.MkdirAll(relativePath, os.ModeDir)
// 	if err != nil {
// 		response.FailWithMessage("文件目录创建失败！", c)
// 		return
// 	}
//
// 	// 上传文件到指定的路径
// 	c.SaveUploadedFile(file, filePath)
//
// 	// 返回数据结果
// 	m := map[string]any{}
// 	m["relativeurl"] = filePath
// 	m["url"] = global.Config.Local.FileServer + filePath
// 	m["size"] = file.Size
// 	m["filename"] = file.Filename
// 	m["newfilename"] = filename
// 	m["ext"] = ext
// 	m["fileHeader"] = file.Header
//
// 	response.OkMsgData("文件上传成功！", m, c)
//
// }
